home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / Heisse Luft.AMOS / Heisse Luft.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1995-09-02  |  2.9 KB  |  114 lines

  1. ' Hi! This is just a little program to show, how this super  
  2. ' soft scrolling works without any blitter copying...
  3. ' only two directions though...
  4. '
  5. Screen Open 1,304,8,4,0
  6. Curs Off : Flash Off : Paper 0 : Cls 0
  7. For A=0 To 31 : Colour A,0 : Next 
  8. Palette 0,$F00,$F80,$F0
  9. Screen Display 1,128,41,304,8
  10. Pen 3 : Print "MEN: 00 GAS: 00 BALLAST: 00";
  11. Screen Open 0,672,200,4,0
  12. Flash Off : Curs Off : Cls 0 : Hide 
  13. Get Sprite Palette 
  14. For A=0 To 15 : Colour A+16,Colour(A) : Next 
  15. Palette 0,$660,$990,$CC0
  16. Screen Display 0,144,50,304,200
  17. MAKE
  18. Make Mask 
  19. Set Rainbow 1,3,242,"","",""
  20. GC=0 : BC=15
  21. For A=0 To 241
  22.   Rain(1,A)=GC*$110+BC
  23.   If(A mod 13)=12 and GC<15 Then Inc GC : Rain(1,A-1)=GC*$110+BC
  24. Next 
  25. Rainbow 1,0,49,202
  26. X=0 : OP=0 : OX=0 : MX=0
  27. A$="A: L X=RD/300-10; P; J A;"
  28. Channel 9 To Rainbow 1
  29. Amal 9,A$
  30. A$="L R0=14400; L R1=3800; L R4=2; L R2=0; L R3=0; "
  31. A$=A$+"A: P; L RC=R0; L RD=R1; L R3=R3+1; L R0=R0+R2; "
  32. A$=A$+"   L R1=R1+R3; L X=R0/50; L Y=R1/50; "
  33. A$=A$+"   I J1&4 J L; "
  34. A$=A$+"   I J1&8 J R; "
  35. A$=A$+"B: I J1&1 J U; "
  36. A$=A$+"   I J1&2 J D;"
  37. A$=A$+"   L A=1; "
  38. A$=A$+"C: I R0<7200 J V;"
  39. A$=A$+"   I R0>21600 J Y; "
  40. A$=A$+"E: I R1<2550 J X; "
  41. A$=A$+"F: J A;"
  42. A$=A$+"V: L R0=7200; L X=R0/50; J E; "
  43. A$=A$+"Y: Let R0=21600; L X=R0/50; J E; "
  44. A$=A$+"X: Let R1=2550; L Y=R1/50; J F; "
  45. A$=A$+"L: I R2<-200 J B; L R2=R2-R4; J B; "
  46. A$=A$+"R: I R2>200 J B; L R2=R2+R4; J B; "
  47. A$=A$+"U: L A=2; L R3=R3-R4-1; J C; "
  48. A$=A$+"D: L R3=R3-20; J C; "
  49. Cls 3
  50. Screen Offset 0,32,0
  51. For A=0 To 304
  52.   X=335+A
  53.   Y=Peek(Start(9)+A)
  54.   Set Line Rnd($FFFF)
  55.   Ink 2,1 : Draw X+16,Y To X+16,199
  56. Next 
  57. Screen Copy 0,335,0,656,200 To 0,15,0
  58. Sprite 0,0,0,1
  59. Channel 0 To Sprite 0
  60. Amal 0,A$
  61. Amal On 0
  62. Amal On 9
  63. Rem           20654321654321 
  64. Doke $DFF098,%11000011000001
  65. L=9999
  66. A=Peek($DFF00F)
  67. ES=0
  68. Repeat 
  69.   Wait Vbl : Gosub SCROL
  70.   A=Peek($DFF00F) and 6
  71.   If A Then Colour 0,Rnd(4095)
  72. Until Y Sprite(0)>250
  73. End 
  74. SCROL:
  75.   XX=Amreg(0,0)
  76.   If XX<12000 Then Gosub SCRLEFT
  77.   If XX<10000 Then Gosub SCRLEFT
  78.   If XX>16800 Then Gosub SCRRIGHT
  79.   If XX>18800 Then Gosub SCRRIGHT
  80. Return 
  81. SCRLEFT:
  82.   Amreg(0,0)=Amreg(0,0)+50
  83.   Dec OP : If OP<0 Then Add OP,16 : Add OX,-16 : If OX<0 Then Add OX,320
  84.   Set Line $FFFF
  85.   X=31+OX+OP : Ink 3 : Draw X,0 To X,199
  86.   Y=Peek(Start(9)+MX)
  87.   Set Line Rnd($FFFF)
  88.   Ink 2,1 : Draw X,Y To X,199
  89.   Add MX,-1,0 To L
  90.   Screen Offset 0,32+OX+OP,0
  91.   Screen Copy 0,X,0,X+1,200 To 0,X+320,0
  92. Return 
  93. SCRRIGHT:
  94.   Amreg(0,0)=Amreg(0,0)-50
  95.   Inc OP : If OP>15 Then Add OP,-16 : Add OX,16 : If OX>319 Then Add OX,-320
  96.   Set Line $FFFF
  97.   X=335+OX+OP : Ink 3 : Draw X,0 To X,199
  98.   MXX=(MX+304) mod L
  99.   Y=Peek(Start(9)+MXX)
  100.   Set Line Rnd($FFFF)
  101.   Ink 2,1 : Draw X,Y To X,199
  102.   Add MX,1,0 To L
  103.   Screen Offset 0,32+OX+OP,0
  104.   Screen Copy 0,X,0,X+1,200 To 0,X-320,0
  105. Return 
  106. Procedure MAKE
  107.   Erase 9 : Reserve As Work 9,10000
  108.   Y=180
  109.   For A=0 To 9999
  110.     Poke Start(9)+A,Y
  111.     UY=Rnd(6)-3
  112.     Y=Max(Min(Y+UY,180),30)
  113.   Next 
  114. End Proc